package dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.classic.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import to.Componente;
import to.ComponenteEquipamento;
import to.TipoEquipamento;
import util.HibernateUtil;

public class ComponenteDAO {

	public List<Componente> listaComponente() {

		List<Componente> listaRetorno = new ArrayList<Componente>();
		Session session = null;

		try {

			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Componente.class, "c");
			criteria.addOrder(Order.asc("c.descricao"));
			listaRetorno = (List<Componente>) criteria.list();

		} catch (Exception e) {
			e.printStackTrace();

		}

		return listaRetorno;

	}

	public Componente buscaComponentePorCodigo(Integer codigo) {

		Componente retorno = new Componente();
		Session session = null;

		try {

			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Componente.class, "c");
			criteria.add(Restrictions.eq("c.id", codigo));
			retorno = (Componente) criteria.uniqueResult();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return retorno;
	}

	public List<ComponenteEquipamento> listaComponenteEquipamento(
			Integer codEquipamento) {

		List<ComponenteEquipamento> listaRetorno = new ArrayList<ComponenteEquipamento>();
		Session session = null;

		try {

			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session
					.createCriteria(ComponenteEquipamento.class, "ce")
					.createAlias("ce.componente", "c")
					.createAlias("ce.equipamento", "eq");
			criteria.add(Restrictions.eq("eq.id", codEquipamento));
			criteria.addOrder(Order.asc("c.id"));
			listaRetorno = (List<ComponenteEquipamento>) criteria.list();

		} catch (Exception e) {
			e.printStackTrace();

		}

		return listaRetorno;

	}

}
